A system for decoding a block code as an error correction code may use, for example, a correlation matrix. A correlation matrix represents correlation between an original pre-coded codeword and a coded codeword, and can be obtained through learning.
According to a conventional method for learning and obtaining a correlation matrix, a coded codeword and a pre-learned correlation matrix are used to perform a predetermined calculation, thereby obtaining a result containing multiple components. Then, each of the components contained in the result is compared with a predetermined threshold TH. Based on the comparison, elements of the pre-learned correlation matrix are updated to obtain a post-learned correlation matrix.
Specifically, assuming that the original pre-coded codeword has M bits and the coded codeword has N bits, their correlation matrix has N rows and M columns. When this correlation matrix is multiplied by the coded codeword, the result will contain M number of components corresponding to respective bits of the original pre-coded codeword. On the other hand, a threshold TH is set for each of the components of the original pre-coded codeword. Specifically, when a component of the original pre-coded codeword is “+1”, then the threshold is set to “+TH” (TH>0). When a component of the original pre-coded codeword is “0”, then the threshold is set to “−TH”. Each of the components resulting from the calculation is compared with the corresponding threshold “+TH” or “−TH”. When the components resulting from the calculation are to be compared to threshold “+TH”, the components in the corresponding column of the correlation matrix are updated only when their values are lower than “+TH”. On the other hand, when the components resulting from the calculation are to be compared to threshold “−TH”, the components in the corresponding column of the correlation matrix are updated only when their values are higher than “−TH”.
Specifically, when the component from the calculation is judged to be lower than the threshold “+TH”, then an update value “±ΔWk” (ΔWk>0) is added to each component in the corresponding column of the correlation matrix. When a component resulting from the calculation is judged to be higher than the threshold “−TH”, then an update value “±ΔWk” is subtracted from each component in the corresponding column of the correlation matrix. The sign “±” of the update value for each row depends on the sign “±” of the corresponding bit of the coded codeword.
Thereafter, the above-described learning operation is repeated for all of the codewords until update can be no longer performed for the elements of the correlation matrix for all of the codewords. Once the correlation matrix is completely updated, the learning operation is converged and correlation matrix is obtained, which can be used for decoding.
When the elements of the correlation matrix have no difference in the calculation results before and after the update, the operation enters an endless loop. In this case, the update value is changed from “±ΔWk” to “±ΔWk+1” (ΔWk>ΔWk+1>0) and the above-describe learning operation is continued.
According to a conventional method for learning a correlation matrix, the update value for learning the correlation matrix is initially set to a high value, and gradually decreased as the learning operation proceeds to rapidly converge the learning operation. However, when the range given by the threshold “TH” set in the learning operation is very large, the number of runs of the learning operation required for all of the codewords becomes larger, thus requiring longer time.
Another problem is that an optimal threshold “TH” for converging the learning operation of the correlation matrix for all of the multiple (many) codewords and at the same time for obtaining a sufficient margin for occurrence of bit error of “±TH” for all codewords is unknown.
In view of the above-described problems, the present invention has an objective of providing a method, a device and a computer program product for learning a correlation matrix, where the correlation matrix is learned while gradually changing a threshold for learning the correlation matrix to search optimal thresholds for all of the multiple codewords, thereby rapidly obtaining an optimal correlation matrix for all of the codewords.